package Inheritance.继承;

public class Dog extends Animal {

	public int age = 20;

	public void eat() {
		System.out.println("年龄：" + age + "\n" + "姓名：" + name + "\n"
				+ "狗具有吃骨头的能力。");
	}

	public Dog() {
		//super(); 可以不写，系统会默认调用父类无参的方法，但若要写，必须放在方法里的首行
		//若父类既没有无参方法，子类又没有调用父类的构造方法
		super();
		System.out.println("Dog类执行了。");
	}

	public void method() {
		System.out.println(super.age); // 调用父类的属性
		System.out.println(age); // 调用子类的属性
		eat(); // 调用子类的方法
		super.eat(); // 调用父类的方法
	}

	@Override
	public String toString() {
		return "Dog [age=" + age + "]";
	}

	@Override
	public int hashCode() {       //hashCode()用来标识唯一对象
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		return result;
	}

	@Override
	public boolean equals(Object obj) {  
		if (this == obj)  //判断两个引用的地址
			return true;
		if (obj == null)  
			return false;
		if (getClass() != obj.getClass())  //obj.getClass()可以得到类对象（年龄），obj类的对象（19）
			return false;
		Dog other = (Dog) obj; //将obj转化为Dog类型
		if (age != other.age)
			return false;
		return true;
	}
	
}
